在 wizardzines.com 网站上,Julia Evans 撰写了git, 网络, linux, 命令行工具等主题的超棒电子杂志. 其中有些杂志是付费的,有些杂志是免费的. 我这里不是托,只是个粉丝而已.
不久前, Julia 在tweet上l公布了 她创建的一个用来阅读相关主题漫画的工具. 我立即想到,这个有趣的工具很适合用 Emacs eshell 来实现.
自那以后, 我订阅了 wizardzines.com/saturday-comics 并收到了一些漫画 (awk, tar, 以及 bash 技巧). 我将这些漫画保存在本地 (以去掉文件扩展名的主题命名).
ls -1 ~/Downloads/wizardzines-comics/
awk bash tar
虽然没有经过实战测试, 但是下面这个elisp片段定义了一个 ecomic 命令. 它会在eshell中以内联的方式显示漫画.
(require 'eshell)
(require 'iimage)
(defvar wizardzines-comics-path "~/Downloads/wizardzines-comics")
(defun eshell/ecomic (&rest args)
"Display command comic in ARGS.
Note: ensure comic images live in `wizardzines-comics-path', named with
command name and no extension."
(eshell-eval-using-options
"ecomic" args
'((?h "help" nil nil "show this usage screen")
:external "ecomic"
:show-usage
:usage "COMMAND
Show COMMAND comic from Julia Evans' https://wizardzines.com/saturday-comics")
(let* ((command (nth 0 (eshell-stringify-list (eshell-flatten-list args))))
(image-fpath (concat (file-name-as-directory
(expand-file-name wizardzines-comics-path))
command)))
(unless (file-exists-p image-fpath)
(error "comic: \"%s\" not found :-(" command))
(eshell-buffered-print "\n")
(add-text-properties 0 (length image-fpath)
`(display ,(create-image image-fpath)
modification-hooks
(iimage-modification-hook))
image-fpath)
(eshell-buffered-print image-fpath)
(eshell-flush))))